]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shellDBus: Add grabFlags parameter
authorAndrea Azzarone <azzaronea@gmail.com>
Wed, 18 Jul 2018 18:26:44 +0000 (20:26 +0200)
committerAndrea Azzarone <andrea.azzarone@canonical.com>
Wed, 20 Feb 2019 13:17:46 +0000 (14:17 +0100)
Add an grabFlags parameter to the GrabAccelerator and GrabAccelerators dbus
methods. This will allow e.g. Gnome Settings Daemon to create shortcuts that
should discard key-repeated events.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/156

Fixes: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/issues/68
data/dbus-interfaces/org.gnome.Shell.xml
js/ui/shellDBus.js

index 233c5e105a6a7fff0f7575c3df5477b2467de1c5..b5b44af7ab0f76dab4bd30e7a660700af9bd8452 100644 (file)
     <method name="ShowApplications"/>
     <method name="GrabAccelerator">
       <arg type="s" direction="in" name="accelerator"/>
-      <arg type="u" direction="in" name="flags"/>
+      <arg type="u" direction="in" name="modeFlags"/>
+      <arg type="u" direction="in" name="grabFlags"/>
       <arg type="u" direction="out" name="action"/>
     </method>
     <method name="GrabAccelerators">
-      <arg type="a(su)" direction="in" name="accelerators"/>
+      <arg type="a(suu)" direction="in" name="accelerators"/>
       <arg type="au" direction="out" name="actions"/>
     </method>
     <method name="UngrabAccelerator">
index 73d74becf6ea18b57eec187bbb4e2deef8679e61..9238b7c3515f0f59871e8f2bae7705d8e2c42729 100644 (file)
@@ -105,9 +105,9 @@ var GnomeShell = class {
     }
 
     GrabAcceleratorAsync(params, invocation) {
-        let [accel, flags] = params;
+        let [accel, modeFlags, grabFlags] = params;
         let sender = invocation.get_sender();
-        let bindingAction = this._grabAcceleratorForSender(accel, flags, sender);
+        let bindingAction = this._grabAcceleratorForSender(accel, modeFlags, grabFlags, sender);
         return invocation.return_value(GLib.Variant.new('(u)', [bindingAction]));
     }
 
@@ -116,8 +116,8 @@ var GnomeShell = class {
         let sender = invocation.get_sender();
         let bindingActions = [];
         for (let i = 0; i < accels.length; i++) {
-            let [accel, flags] = accels[i];
-            bindingActions.push(this._grabAcceleratorForSender(accel, flags, sender));
+            let [accel, modeFlags, grabFlags] = accels[i];
+            bindingActions.push(this._grabAcceleratorForSender(accel, modeFlags, grabFlags, sender));
         }
         return invocation.return_value(GLib.Variant.new('(au)', [bindingActions]));
     }
@@ -151,13 +151,13 @@ var GnomeShell = class {
                                GLib.Variant.new('(ua{sv})', [action, params]));
     }
 
-    _grabAcceleratorForSender(accelerator, flags, sender) {
-        let bindingAction = global.display.grab_accelerator(accelerator);
+    _grabAcceleratorForSender(accelerator, modeFlags, grabFlags, sender) {
+        let bindingAction = global.display.grab_accelerator(accelerator, grabFlags);
         if (bindingAction == Meta.KeyBindingAction.NONE)
             return Meta.KeyBindingAction.NONE;
 
         let bindingName = Meta.external_binding_name_for_action(bindingAction);
-        Main.wm.allowKeybinding(bindingName, flags);
+        Main.wm.allowKeybinding(bindingName, modeFlags);
 
         this._grabbedAccelerators.set(bindingAction, sender);